package br.fatec.model.dao;

import java.util.HashMap;
import java.util.List;

import br.fatec.model.entity.Sinonimo;
import br.fatec.util.Globals;
import br.fatec.util.Persistencia;

public class SinonimoDao {
	private Persistencia persis;		
	
	public SinonimoDao()
	{
		Globals globals = Globals.getInstance();
		
		this.persis = globals.getPersistencia();
	}
	
	public void cadastrar(Sinonimo sinonimo) throws Exception
	{	
		persis.cadastrar(sinonimo);	
	}
	
	public void alterar(Sinonimo sinonimo) throws Exception
	{	
		persis.alterar(sinonimo);
	}
	
	public void excluir(Sinonimo sinonimo) throws Exception
	{
		persis.excluir(sinonimo.getClass(), sinonimo.getCodigo());
	}
	
	public void desativar(Sinonimo sinonimo) throws Exception {
		sinonimo = consultar(sinonimo.getCodigo());
		
		sinonimo.setAtivo(false);
		
		persis.alterar(sinonimo);
	}
	
	public Sinonimo consultar(Integer codigo) throws Exception
	{	
		String query = "select * from sinonimo where codigo = :codigo and ativo = 'true'";
		
		HashMap<String, Object> parametros = new HashMap<String, Object>();
		parametros.put("codigo", codigo);
		parametros.put("ativo", true);
		
		return (Sinonimo)persis.consultar(Sinonimo.class, query, parametros);
	}
	
	@SuppressWarnings("unchecked")
	public List<Sinonimo> listar() throws Exception
	{
		String query = "select * from sinonimo where ativo = :ativo order by codigo asc";
		
		HashMap<String, Object> parametros = new HashMap<String, Object>();
		parametros.put("ativo", true);
		
		return (List<Sinonimo>)persis.listar(Sinonimo.class, query, parametros);
	}
	
	@SuppressWarnings("unchecked")
	public List<Sinonimo> listar(String nome) throws Exception {
		String query = "select * from funcionario where nome ilike :nome and ativo = :ativo order by nome asc";
		
		HashMap<String, Object> parametros = new HashMap<String, Object>();
		parametros.put("nome", "%" +nome+"%");
		parametros.put("ativo", true);

		return (List<Sinonimo>) persis.listar(Sinonimo.class, query, parametros);
	}
}
